/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.uniminuto.edu.videominuto.entities;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Juan
 */
@Entity
@Table(name = "calificacion")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Calificacion.findAll", query = "SELECT c FROM Calificacion c"),
    @NamedQuery(name = "Calificacion.findByIdCliente", query = "SELECT c FROM Calificacion c WHERE c.calificacionPK.idCliente = :idCliente"),
    @NamedQuery(name = "Calificacion.findByIdVideo", query = "SELECT c FROM Calificacion c WHERE c.calificacionPK.idVideo = :idVideo"),
    @NamedQuery(name = "Calificacion.findByIdTipoCalificaion", query = "SELECT c FROM Calificacion c WHERE c.calificacionPK.idTipoCalificaion = :idTipoCalificaion"),
    @NamedQuery(name = "Calificacion.findByCantCalificacion", query = "SELECT c FROM Calificacion c WHERE c.cantCalificacion = :cantCalificacion")})
public class Calificacion implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected CalificacionPK calificacionPK;
    @Basic(optional = false)
    @NotNull
    @Column(name = "cant_calificacion")
    private int cantCalificacion;
    @JoinColumn(name = "id_tipo_calificaion", referencedColumnName = "id_tipo_calificacion", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private TipoCalificacion tipoCalificacion;
    @JoinColumn(name = "id_video", referencedColumnName = "id_video", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Video video;
    @JoinColumn(name = "id_cliente", referencedColumnName = "id_cliente", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Cliente cliente;

    public Calificacion() {
    }

    public Calificacion(CalificacionPK calificacionPK) {
        this.calificacionPK = calificacionPK;
    }

    public Calificacion(CalificacionPK calificacionPK, int cantCalificacion) {
        this.calificacionPK = calificacionPK;
        this.cantCalificacion = cantCalificacion;
    }

    public Calificacion(int idCliente, int idVideo, int idTipoCalificaion) {
        this.calificacionPK = new CalificacionPK(idCliente, idVideo, idTipoCalificaion);
    }

    public CalificacionPK getCalificacionPK() {
        return calificacionPK;
    }

    public void setCalificacionPK(CalificacionPK calificacionPK) {
        this.calificacionPK = calificacionPK;
    }

    public int getCantCalificacion() {
        return cantCalificacion;
    }

    public void setCantCalificacion(int cantCalificacion) {
        this.cantCalificacion = cantCalificacion;
    }

    public TipoCalificacion getTipoCalificacion() {
        return tipoCalificacion;
    }

    public void setTipoCalificacion(TipoCalificacion tipoCalificacion) {
        this.tipoCalificacion = tipoCalificacion;
    }

    public Video getVideo() {
        return video;
    }

    public void setVideo(Video video) {
        this.video = video;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (calificacionPK != null ? calificacionPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Calificacion)) {
            return false;
        }
        Calificacion other = (Calificacion) object;
        if ((this.calificacionPK == null && other.calificacionPK != null) || (this.calificacionPK != null && !this.calificacionPK.equals(other.calificacionPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "co.uniminuto.edu.videominuto.entities.Calificacion[ calificacionPK=" + calificacionPK + " ]";
    }
    
}
